home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / thor / thor24arexx.lha / AddMIME.thor next >
Text File  |  1996-11-11  |  3KB  |  130 lines

  1. /*
  2.   $VER: AddMIME.thor 0.3 (3.10.96)
  3.   by Remco van Hooff
  4.  
  5.   Attach a file (MIME) while writing a msg in Thor.
  6.   Run from FSE, CED or GED.
  7.   Borrowed some code from InsertIt.thor.
  8.  
  9.  
  10.   HISTORY
  11.   0.2 - When the filerequester would be cancelled an empty attacment would be
  12.         created.
  13.       - No more requester/status bar stating DOC=xxx when using GoldED.
  14.   0.3 - When the uploadpath for the current system is not defined the global
  15.         upload path is used.
  16. */
  17.  
  18. OPTIONS RESULTS
  19.  
  20. /*!~ "Get MSGFILE from editor" */
  21. editor.name.1     = 'GOLDED'
  22. editor.filename.1 = 'QUERY DOC VAR filename'
  23. editor.name.2     = 'THOR_FSE'
  24. editor.filename.2 = 'MSGFILENAME'
  25. editor.name.3     = 'rexx_ced'
  26. editor.filename.3 = 'status 21'
  27. editor.count = 3
  28.  
  29. DO n = 1 TO editor.count
  30.   IF(SUBSTR(ADDRESS(),1,LENGTH(editor.name.n)) = editor.name.n) THEN DO
  31.     editorport = address()
  32.     INTERPRET editor.filename.n
  33.     filename = RESULT
  34.     IF POS('/', filename) ~= 0 THEN filename = SUBSTR(filename, (LASTPOS('/', filename) + 1))
  35.   END
  36. END
  37.  
  38. IF editorport = '' THEN DO
  39.   SAY 'This script has to be run from your editor.'
  40.   SAY 'GoldED, FSE (Thor''s internal editor) and CygnusED are currently supported.'
  41.   EXIT
  42. END
  43. /*~!*/
  44.  
  45. /*!~ "Init" */
  46. p=' '||ADDRESS()||' '||SHOW('P',,)
  47. IF POS(' THOR.',p)>0 THEN thorport=WORD(SUBSTR(p,POS(' THOR.',p)+1),1)
  48. ELSE DO
  49.   SAY 'THOR port not found!'
  50.   EXIT 10
  51. END
  52.  
  53. IF ~SHOW('p', 'BBSREAD') THEN DO
  54.   ADDRESS COMMAND
  55.   "run >nil: `GetEnv THOR/THORPath`bin/LoadBBSRead"
  56.   "WaitForPort BBSREAD"
  57. END
  58. /*~!*/
  59.  
  60. /*!~ "Get system stuff" */
  61. ADDRESS(thorport)
  62. 'CURRENTBBS stem CURRENT'
  63. IF(RC ~= 0 | CURRENT.BBSNAME ~= "") THEN system = CURRENT.BBSNAME
  64. ELSE EXIT
  65.  
  66. ADDRESS(bbsread)
  67. 'GETBBSDATA "'system'" STEM BBSDATA'
  68. IF(RC ~= 0) THEN DO
  69.   ADDRESS(thorport)
  70.   'REQUESTNOTIFY TEXT "'BBSREAD.LASTERROR'" BT "_Ok"'
  71.   EXIT 5
  72. END
  73.  
  74. updir = BBSDATA.UPLOADPATH
  75.  
  76. IF  updir = '' THEN DO
  77.   'GETGLOBALDATA STEM GLOBAL'
  78.   IF(RC ~= 0) THEN DO
  79.     ADDRESS(thorport)
  80.     'REQUESTNOTIFY TEXT "'BBSREAD.LASTERROR'" BT "_Ok"'
  81.     EXIT 5
  82.   END
  83.   updir = GLOBAL.UPLOADPATH
  84. END
  85. /*~!*/
  86.  
  87. /*!~ "Attach file" */
  88. DO i = BBSDATA.FIRSTEVENT TO BBSDATA.LASTEVENT
  89.   DROP MSGTAGS. MSGDATA.
  90.   'READBREVENT BBSNAME "'system'" EVENTNR 'i' TAGSSTEM MSGTAGS DATASTEM MSGDATA'
  91.   IF(RC ~= 0) THEN DO
  92.     ADDRESS(thorport)
  93.     'REQUESTNOTIFY TEXT "'BBSREAD.LASTERROR'" BT "_Ok"'
  94.     EXIT 5
  95.   END
  96.  
  97.   IF(filename = MSGTAGS.MSGFILE) THEN DO
  98.     attachfile = request_file(updir)
  99.     IF (EXISTS(attachfile) & attachfile ~= '') THEN DO
  100.       MSGTAGS.LOCALFILE  = attachfile
  101.       WRITEBREVENT BBSNAME '"'system'"' EVENT MSGDATA.EVENTTYPE STEM MSGTAGS UPDATEEVENTNR i
  102.       IF(RC ~= 0) THEN DO
  103.         ADDRESS(thorport)
  104.         'REQUESTNOTIFY TEXT "'BBSREAD.LASTERROR'" BT "_Ok"'
  105.         EXIT 5
  106.       END
  107.       EXIT
  108.     END
  109.   END
  110. END
  111. /*~!*/
  112.  
  113. EXIT
  114.  
  115. /*!~ "Request_File" */
  116. request_file:
  117.   path    = ARG(1)
  118.   ADDRESS(thorport)
  119.   'REQUESTFILE TITLE "Select file to attach." ID "'path'" FP'
  120.   IF (RC = 30) THEN DO
  121.     ADDRESS(thorport)
  122.     'REQUESTNOTIFY TEXT "'THOR.LASTERROR'" BT "_Ok"'
  123.     EXIT
  124.   END
  125.   IF RC = 5 THEN RETURN('')
  126.   IF RC = 0 THEN dir = RESULT
  127. RETURN(dir)
  128. /*~!*/
  129.  
  130.